====== Comment partitionner son disque pour pouvoir installer GRUB ======

Le choix du paquet [[:grub-pc|GRUB]] à installer pour amorcer Ubuntu et les autres OS installés est dépendant du matériel et du type de partitionnement du disque dur.

<note tip>Dans l'ensemble de cette page, GRUB fait référence à [[:grub-pc|GRUB version 2]], c'est à dire grub-pc ou grub-efi, et jamais à [[:grub legacy]].</note>

Au niveau du matériel, pour les PC modernes, il existe deux modes de démarrage : le [[wpfr>Basic_Input_Output_System|BIOS]] et l'[[wpfr>UEFI]], et deux principaux types d'[[:architecture matérielle]] : la famille des [[wpfr>x86|x86 32 bits]] aussi nommée i386 ou IA-32, et les x86 64 bits aussi nommée [[wpfr>AMD64]] ou EMT64. Les architectures plus ancienne comme le [[wpfr>PowerPC]], ou plus récente comme l'[[wpfr>ARM]] ne sont pas évoquée ici.

Pour ce qui est du partitionnement, qu'il soit sur le disque dur ou un autre suport (clé USB, carte SD), les deux principaux sont le type Intel qui utilise un [[wpfr>MBR]] pour l'amorçage et le type [[wpfr>GPT]]((GUID Partition Table)) qui offre plusieurs possibilités.

L'ensemble de ces technologies pouvant être rencontrées indifféremment, cette page a pour but de vous guider dans vos paramétrages pour installer ou dépanner GRUB selon votre configuration matérielle.

<note important>Cette page s'adresse à un public averti qui souhaite comprendre le fonctionnement de GRUB et corriger les erreurs de version éventuelles. Une bonne connaissance de la ligne de commande, et du gestionnaire de paquet est recommandée.</note>

===== Détection =====

  * **mode de démarrage**

Voir la page [[:UEFI]] pour la modification du mode de démarrage et savoir dans quel mode est démarré Ubuntu.

A noter que Ubuntu 32 bits comme Ubuntu 64 bits peuvent démarré en mode UEFI même si ils n'ont pas été installé dans ce mode initialement.

  * **table de partition**

Voir la page [[:GPT]].

===== Compatibilité =====

Le tableau ci-dessous indique quel paquet GRUB doit être installé pour permettre l'amorçage en fonction de votre configuration :

^ mode de démarrage ^ table de partition ^ paquet GRUB ^ commentaire ||
| BIOS/Legacy | Intel / MBR | [[apt>grub-pc]] | cas standard sur les configurations "anciennes" ||
| ::: | GPT | [[apt>grub-pc]] | Nécessite une partition BIOS-boot ||
| UEFI | Intel / MBR | **non-compatible** | Le mode UEFI requiert une partition EFI (ou ESP(([[wp>EFI System partition]]))) et une table de partition GPT.\\ Il faut changer le mode de démarrage pour le mode Legacy pour ne pas avoir à reformater tout le disque-dur. ||
| ::: | GPT | [[apt>grub-efi]] | [[#Démarrage UEFI et Ubuntu 32 bits|Ubuntu 32 bits]] | **Attention :** si votre PC est de type **x86-64** et que vous avez installé **Ubuntu 32 bits**, vous devez installer __explicitement__ le paquet [[apt>grub-efi-amd64]]((ou [[apt>grub-efi-amd64-signed]])) (voir [[#Changer de version de GRUB]]) |
| ::: | ::: | ::: | **SecureBoot** | Pour la prise en charge de **SecureBoot**, il faut aussi installer le paquet [[apt>shim]] et il est parfois nécessaire d'installer en plus les paquets signés par Microsoft : [[apt>shim-signed]] et/ou [[apt>grub-efi-amd64-signed]] |

==== Changer de version de GRUB ====

<note>Pour modifier la version de GRUB d'une installation qui ne démarre plus, il peut être nécessaire de faire un [[:chroot]] depuis un Live CD/USB. Cette procédure s'adresse un </note>

<note tip>Il est possible d'utiliser [[:Boot-Repair]] pour corriger automatiquement la plupart des erreurs de version.</note>

Plusieurs version de GRUB ne peuvent pas cohabiter sur une même installation, donc si vous devez passer de ''grub-pc'' à ''grub-efi'' ou vice versa, il faut absolument désinstaller tout les paquets se rapportant à GRUB avant d'installer la version ciblée.

  * Désinstaller récursivement de tous les paquets GRUB depuis un terminal :<code>sudo apt-get remove grub*</code>
  * Installer le paquet GRUB correspondant à votre configuration (voir tableau [[#Compatibilité]])
  * Lancer la (re)configuration de GRUB, via un terminal et vérifier qu'il n'y a pas d'erreur :<code>sudo update-grub</code>
  * Redémarrer le système, constater le résultat :-)

==== Démarrage UEFI et Ubuntu 32 bits ====

 FIXME trop d'info, pas clair, pas au bon endroit : faire un section Problème de boot : version GRUB installé incompatible
D'abord présenter le fonctionnement de GRUB sur BIOS/UEFI et MBR/EFI

Le live CD/USB d'Ubuntu 32 bits ne permet pas le démarrage en mode UEFI, mais il est possible de démarrer en mode BIOS/Legacy : la plupart des PC font ça automatiquement.
Ainsi vous avez installé Ubuntu 32 bits et que votre système ne démarre plus après avoir retiré le CD ou la clé USB, vous êtes certainement en mode de démarrage UEFI par défaut et GRUB n'a pas été correctement installé.

Si votre disque dur a une table de partition Intel / MBR : Il suffit de modifier le réglage du BIOS/UEFI pour démarrer en mode Legacy. Lors de l'installation, Ubuntu a déjà dû installer grub-pc, sinon réinstaller-le via un chroot

Si votre disque dur a une table de partition GPT :
  * Si le disque dur a déjà une parition EFI : Il est nécessaire de redémarrer sur le Live CD/USB d'Ubuntu, de réaliser un [[:chroot]] sur l'installation existante d'Ubuntu sur le disque dur et de procéder au [[Changer de version de GRUB|changement de version de GRUB]] pour installer explicitement le paquet [[apt>grub-efi-amd64]]. En effet, lors de l'installation, Ubuntu a dû installer une version inadaptée de GRUB : soit grub-pc soit grub-efi-ia32
  * Si le disque dur n'a pas de partition EFI : Il est nécessaire de créer une partition EFI si vous restez en mode de démarrage UEFI, ou de créer un partition bios_boot et de changer le mode de démarrage sur BIOS/Legacy : Ces opétations sont risquées et déconseillée aux débutants. Une réinstallation de Ubuntu depuis la version 64 bits est parfois plus simple.

===== Fonctionnement de GRUB =====

GRUB est constitué de 2 parties :
  * le **chargeur d'amorçage**((boot loader)) :\\ Il est appelé par le programme de démarrage du système (ie BIOS ou UEFI), c'est cette partie dont l'emplacement et le contenu diffère selon le mode de démarrage et/ou de partitionnement. Il a en charge de trouver l'OS manager et de le lancer. Lorsque ce dernier n'a pas été trouvé, l'invite "**GRUB Rescue>**" est lancée.

  * le **gestionnaire de boot**((boot manager / OS manager)) :\\ Il est chargé d'afficher le choix de l'OS à lancer (Ubuntu, Windows, etc). Cette partie de GRUB est installée dans /boot/grub ( /boot pouvant être sur la partition racine du système ou une partition dédiée). La configuration est quasi identique pour toutes les versions de GRUB, et est basée sur le fichier ''/etc/default/grub''.